home *** CD-ROM | disk | FTP | other *** search
/ The Best of Tucows 2 / The Best of TUCOWS Volume 2.iso / setup95 / ie4nt_s2.cab / IE4NT_2.CAB / SHDOCVW.DLL / 2110 / ABOUT.DLG next >
Text File  |  1997-09-18  |  24KB  |  788 lines

  1. <HTML id=dlgAbout STYLE="width: 25.9em; height: 22em">
  2. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  3. <head>
  4. <TITLE>
  5. About Internet Explorer
  6. </TITLE>
  7. <style>
  8.     .versionformat {
  9.         color: black;
  10.         font-family: MS Sans Serif;
  11.         font-size: 8pt;
  12.         position: absolute; 
  13.         left: 0em; 
  14.     top: 0em;
  15.         height: 2em; 
  16.         width:25em;
  17.     z-index: 20;
  18.        }
  19.  
  20.     .textformat {
  21.     color: black;
  22.         font-family: MS Sans Serif;
  23.         font-size:8pt;
  24.         position: absolute; 
  25.         left: 10.2em; 
  26.         top: 19.3em;  //19.5em;
  27.         height: 3em; 
  28.         width:26.5em;
  29.     }
  30.  
  31.     .logo {
  32.     color: LIGHTGREY;
  33.     font-family: MS Sans Serif;
  34.         font-size:40pt;
  35.         position: absolute; 
  36.         left: 1.9em; 
  37.         top: 4.5em;
  38.         height: 0.5em; 
  39.         width:1em;
  40.     z-index: -1;
  41.     }
  42.   .button{
  43.     position: absolute;
  44.     top: 28em;
  45.     width: 7em;
  46.     height: 2.2em;
  47.     color: black;
  48.     font-family: MS Sans Serif;
  49.            font-size:8pt;
  50.     cursor: hand;
  51.     z-index: 100;
  52.  
  53.     }
  54. </style>
  55.  
  56.  
  57.  
  58. </head>
  59.  
  60. <body id=bodyid onload="OnPageLoad()" onfilterchange="bodyOnFilterChange()" onkeydown="bodyOnKeyDown()" bgcolor="white" scroll=no leftmargin=0 topmargin=0 rightmargin=0 bottommargin=0 style="border:none">
  61. <!--Graphics -->
  62. <div id="allPic"  STYLE="width:25em;position: absolute; top: 0px;left:0px;font-family: MS Sans Serif;font-size: 8pt; z-index: 13;">
  63. </div>
  64. <img src="ie256.gif" id="ID_IE" CLASS="Movable" style="position:absolute; left:0; top:0; width:0; height:0; visibility:hidden; z-index: 10;" FinalHeight=44, FinalWidth=39, FinalX=353, FinalY=0>
  65. <img src="world256.gif" id="ID_World"
  66.         style="position:absolute; left:0px; top:0px; width:0; height:0; visibility:hidden; z-index: 3;" 
  67.         FinalHeight=86, FinalWidth=86, FinalX=12, FinalY=56 nOrigLeft=86, nOrigTop=86>
  68.  
  69. <img src=ietxt256.bmp id="ID_IEText" style="position:absolute; left:104; top:61; width:269; height:109; visibility:hidden; z-index:100"
  70.     SuperClass="Flingable" xDelta="0" yDelta="0" reqDirX=1 reqDirY=0 nScore=2>
  71.  
  72. <img src=lines256.bmp id=lines style="position:absolute;left:0;top:0;visibility:hidden">
  73.  
  74. <div id="versionDetails" class=versionformat style="color: white; left: 10.2em; top: 16.2em">
  75. Version <SPAN id=spaVersion ></SPAN><br>
  76. <span id=minorversion></SPAN>
  77. </div>
  78.  
  79. <div id="userInfo"  class=textformat style="visibility:hidden;z-index: 10;line-height: 140%">
  80.     <SPAN id=spaText>Product ID: <SPAN id=pID></SPAN></SPAN>
  81.     <BR><A href="" id=copyrightLink onclick="copyrightclick()"  > Copyright Information</A><!-- onmouseover="copyrightmouseover()" onmouseout="copyrightmouseout()" --> 
  82. </div>
  83.  
  84. <DIV id="copyrightDetails"  class=textformat style="visibility:hidden">
  85.     Based on NCSA Mosaic. NCSA Mosaic(TM); was developed at the National Center for
  86.     Supercomputing Applications at the University of Illinois at Urbana-Champaign. Distributed under a 
  87.     licensing agreement with Spyglass, Inc.
  88. </DIV>
  89.  
  90. <!-- <div id="copyrightLogo" class=logo style="visibility:hidden;z-index: 9">©©©</DIV> -->
  91. <DIV id="copyrightDetails2" class=textformat style="visibility:hidden">
  92.     <P>Contains security software licensed from<BR>RSA Data Security Inc.</P>
  93.     <p style="position: relative; top: -0.5em">Portions of this software are based in part<BR>on the work of the Independent
  94.     JPEG Group.</P>
  95. </DIV>
  96. <DIV id="copyrightDetails3" class=textformat style="visibility:hidden">
  97.     <p>Contains SOCKS client software licensed from<BR>Hummingbird Communications Ltd</P>
  98.     <p style="position: relative; top: -0.5em">Contains ASN.1 software licensed from<BR>Open Systems Solutions, Inc.</P>
  99. </DIV>
  100. <DIV id="copyrightDetails4" class=textformat style="visibility:hidden">
  101.     <p>Multimedia software components, including Indeo(R); video, Indeo(R) audio, and Web Design Effects are provided by Intel Corp</P>
  102. </DIV>
  103.  
  104.  
  105. <DIV id=warning  class=textformat style="visibility:hidden">
  106. Warning:  This computer program is protected by copyright law and
  107. international treaties.  Unauthorized reproduction or distribution of
  108. this program, or any portion of it, may result in severe civil and
  109. criminal penalties, and will be prosecuted to the maximum extent
  110. possible under the law.
  111. </div>
  112. <div id=gettingStarted class=textformat style="visibility:hidden;line-height:175%"><a href="res://ie4tour.dll/tour.htm#MinimalTour=1" onclick="gettingStartedClick()">Take a Quick Tour</A>
  113. <div id=techSupport style="visibility:hidden"><a href="http://www.microsoft.com/iesupport/">Technical Support</a></div>
  114. <DIV id=copyrightMicrosoft  style="visibility:hidden"><a href="http://www.microsoft.com/" id="copyright">Copyright ©1995-97 Microsoft Corp.</a><span id="rightsReserved"><BR>All rights reserved.</span></DIV>
  115. </DIV>
  116. <BUTTON id="backButton" class=button accessKey="B" onClick="backButtononclick()" style="left: 31.5em; visibility: hidden">< <U>B</U>ack</BUTTON> <!-- onmouseover="buttonOnMouseOver()" onmouseout="buttonOnMouseOut()" --> 
  117. <BUTTON id="nextButton" class=button accessKey="N" onClick="nextButtononclick()"  style="left: 31.5em; visibility: hidden"><U>N</U>ext ></BUTTON> <!-- onmouseover="buttonOnMouseOver()" onmouseout="buttonOnMouseOut()" --> 
  118. <BUTTON id="okButton" class=button onClick="window.close();" style="left: 29.5em; visibility: hidden">OK</BUTTON> <!-- onmouseover="buttonOnMouseOver()" onmouseout="buttonOnMouseOut()" --> 
  119. <BUTTON id="ID_Lock" class=button onClick="UnLock(ID_Lock);" style="left:104; top:61; visibility: hidden; z-index:1">Unlock</BUTTON>
  120. <SCRIPT language=javascript>
  121. window.onerror = HandleError;
  122. var isMMInstalled=0;  //Disable MM because of DirectD flicker bug on S3 cards
  123. var beforeLinksDivCount=5;
  124. var totaldivCount=8;
  125. var noReEntry=0;
  126. var curDiv=0;
  127. var fade=0;
  128. var backwards=0;
  129. divNames = new Object();
  130. divNames[0]="userInfo";
  131. divNames[1]="copyrightDetails";
  132. divNames[2]="copyrightDetails2";
  133. divNames[3]="copyrightDetails3";
  134. divNames[4]="copyrightDetails4";
  135. divNames[5]="warning";
  136. divNames[6]="gettingStarted";
  137. divNames[7]="techSupport";
  138. divNames[8]="copyrightMicrosoft";
  139.  
  140. var g_nFinalGrowth = 12;
  141. var g_nCurrGrowth = 0;
  142.  
  143. var g_nDragOffsetX=0;
  144. var g_nDragOffsetY=0;
  145. var g_fInDrag=0;
  146. var g_nStep=0;
  147. var g_nMaxStepHistory=4;
  148. var g_szPrevElement="";
  149. var g_cFlungObjects=0;
  150. var g_nScore=0;
  151. var g_nScoreNeeded=3;  // 1 for text  + 1 for button
  152.  
  153. FlingingItems = new Object();
  154.  
  155. CursorHistoryX = new Object();
  156. CursorHistoryY = new Object();
  157.  
  158. var g_nWobbleAmount = 4;
  159.  
  160. //+-------------------------------------------------------------------
  161. //
  162. //  Synopsis:   Turns off error messages in dialogs
  163. //
  164. //  Arguments:  none
  165. //
  166. //  returns:    true (tells browser not to handle message)
  167. //
  168. //--------------------------------------------------------------------
  169.  
  170.  
  171. function HandleError(message, url, line)
  172. {
  173.     var L_Dialog_ErrorMessage = "An error has occured in this dialog.";
  174.     var L_ErrorNumber_Text = "Error: ";
  175.  
  176.     var str = L_Dialog_ErrorMessage + "\n\n" 
  177.         + L_ErrorNumber_Text + line + "\n"
  178.         + message;
  179.  
  180.     alert (str);
  181.     window.close();
  182.  
  183.     return true;
  184. }
  185.  
  186.  
  187. //function called by body.onload.  Starts initial animation
  188. function OnPageLoad()
  189. {
  190.     var L_UpdateVersions_Text = "Update versions: "; 
  191.    
  192.     if(window.screen.colorDepth<8)
  193.     {
  194.         document.all["ID_IE"].src="ie.gif";
  195.         document.all["ID_World"].src="world.bmp";
  196.         document.all["lines"].src="lines.bmp";
  197.         document.all["ID_IEText"].src="ietext.bmp";
  198.     }
  199.     else
  200.         document.body.bgColor="#F8F8F8";
  201.  
  202.     if(isMMInstalled==1)
  203.     {
  204.         for(i=0;i<=beforeLinksDivCount;i++)
  205.         {
  206.             document.all[divNames[i]].style.filter="blendTrans(duration=0.5)";
  207.             document.all[divNames[i]].onfilterchange="onfilterchangeHandler()";
  208.         }
  209.         for(i=beforeLinksDivCount+1;i<=totaldivCount;i++)
  210.         {
  211.             document.all[divNames[i]].style.filter="blendTrans(duration=0.5)";
  212.             document.all[divNames[i]].onfilterchange="onfilterchangeHandlerLinks()";
  213.         }
  214.         document.all.copyrightLogo.style.filter="blendTrans(duration=0.5)";
  215.     }
  216.  
  217.     if ((null != window.dialogArguments))
  218.     {
  219.         arrArgs = window.dialogArguments.split("~");
  220.         spaVersion.innerText = arrArgs[0];
  221.         pID.innerText=arrArgs[4];
  222.     }
  223.  
  224.     //Check for QFEs
  225.     var mv=window.navigator.appMinorVersion;
  226.     if(mv!="") minorversion.innerText=L_UpdateVersions_Text + mv;
  227.     spaText.innerText = spaText.innerText;
  228.     backButton.style.posLeft=okButton.style.posLeft-15.3;
  229.     nextButton.style.posLeft=okButton.style.posLeft-7.6;
  230.     allPic.style.pixelLeft=userInfo.offsetLeft-103;
  231.     allPic.style.pixelTop=(versionDetails.offsetTop-170)/2;
  232.  
  233.     //start initial animation
  234.     document.all["ID_World"].style.visibility="";
  235.     document.all["ID_IE"].style.visibility="";
  236.  
  237.     // Create final x/y for World and Logo.
  238.     document.all["ID_IE"].FinalX=allPic.style.posLeft+350;
  239.     document.all["ID_IE"].FinalY=allPic.style.posTop+0;
  240.     document.all["ID_World"].FinalX=allPic.style.posLeft+10;
  241.     document.all["ID_World"].FinalY=allPic.style.posTop+50;
  242.     document.all["ID_World"].nOrigLeft=document.all["ID_World"].FinalX;
  243.     document.all["ID_World"].nOrigTop=document.all["ID_World"].FinalY;
  244.  
  245.     // Move World and Logo onto screen.
  246.     window.setTimeout("DoGrow();",100);
  247. }
  248.  
  249. //this function grows the earth and IE logos from the upper left corner
  250. function DoGrow()
  251. {
  252.     g_nCurrGrowth += 1;
  253.  
  254.     ID_World.style.posHeight = Math.round(parseInt(ID_World.FinalHeight) * (g_nCurrGrowth/g_nFinalGrowth));
  255.     ID_World.style.posWidth = Math.round(parseInt(ID_World.FinalWidth) * (g_nCurrGrowth/g_nFinalGrowth));
  256.     ID_World.style.posLeft = Math.round(parseInt(ID_World.FinalX) * (g_nCurrGrowth/g_nFinalGrowth));
  257.     ID_World.style.posTop = Math.round(parseInt(ID_World.FinalY) * (g_nCurrGrowth/g_nFinalGrowth));
  258.  
  259.     document.all.ID_IE.style.posHeight = Math.round(parseInt(document.all.ID_IE.FinalHeight) * (g_nCurrGrowth/g_nFinalGrowth));
  260.     document.all.ID_IE.style.posWidth = Math.round(parseInt(document.all.ID_IE.FinalWidth) * (g_nCurrGrowth/g_nFinalGrowth));
  261.     document.all.ID_IE.style.posLeft = Math.round(parseInt(document.all.ID_IE.FinalX) * (g_nCurrGrowth/g_nFinalGrowth));
  262.     document.all.ID_IE.style.posTop = Math.round(parseInt(document.all.ID_IE.FinalY) * (g_nCurrGrowth/g_nFinalGrowth));
  263.  
  264.  
  265.     if(g_nCurrGrowth < g_nFinalGrowth)
  266.     {
  267.         window.setTimeout("DoGrow()",1);
  268.     }
  269.     else
  270.     {
  271.         window.setTimeout("DoPics()",200);
  272.     }
  273. }
  274.  
  275. //When done growing, display the other parts of the IE splash screen
  276. function DoPics() {
  277.     ID_IEText.style.posTop=allPic.offsetTop+60;
  278.     ID_IEText.style.posLeft=allPic.offsetLeft+98;
  279.     ID_IEText.style.visibility="";
  280.  
  281.     ID_Lock.style.posTop=ID_IEText.style.posTop+30;
  282.     ID_Lock.style.posLeft=ID_IEText.style.posLeft+100;
  283.     ID_Lock.style.visibility="";
  284.  
  285.     lines.style.posLeft=allPic.style.posLeft+43;
  286.     lines.style.posTop=allPic.style.posTop+17;
  287.     lines.style.visibility="";
  288.  
  289.     window.setTimeout("startVersion()",500);
  290. }
  291.  
  292. //Start version number sliding in from bottom
  293. function startVersion() {
  294.     versionDetails.style.posTop=28;
  295.     versionDetails.style.color="black";
  296.     DoVersion();
  297. }
  298.  
  299. function DoVersion() {
  300. if (versionDetails.style.posTop>16.2) versionDetails.style.posTop=versionDetails.style.posTop-1;
  301. if (versionDetails.style.posTop<=16.2) 
  302.     {
  303.     versionDetails.style.posTop=16.2;
  304.     okButton.style.visibility="";
  305.     okButton.focus();
  306.     window.setTimeout("DoShow()",100);
  307.     showDiv=-2;
  308.     }
  309. else window.setTimeout("DoVersion()",1);
  310. }
  311.  
  312. //General function for showing the different paragraphs of text
  313. //If MM is used, performs a fade-in transition
  314.  
  315. function DoShow() {
  316. if(isMMInstalled==1) document.all[divNames[curDiv]].filters[0].Apply();
  317. document.all[divNames[curDiv]].style.visibility="visible";
  318. if(isMMInstalled==1) document.all[divNames[curDiv]].filters[0].Play();
  319. //Next two lines call the filterchanged events manually
  320. //when MM is not enabled
  321. else if(curDiv<=beforeLinksDivCount) onfilterchangeHandler();
  322. else onfilterchangeHandlerLinks();
  323. }
  324.  
  325. //General function for hiding the different paragraphs
  326. //IF MM is used, performs a fade-out transition
  327.  
  328. function DoFade() {
  329. var divNum=DoFade.arguments[0];
  330. fade=1;
  331. if(isMMInstalled==1) document.all[divNames[divNum]].filters[0].Apply();
  332. document.all[divNames[divNum]].style.visibility="hidden";
  333. if(isMMInstalled==1) document.all[divNames[divNum]].filters[0].Play();
  334. //Next two lines call the filterchanged events manually
  335. //when MM is not enabled
  336. else if(curDiv<=beforeLinksDivCount) onfilterchangeHandler();
  337. else {
  338.     if(backwards==0) curDiv=curDiv-1; 
  339.     onfilterchangeHandlerLinks();
  340.     }
  341. }
  342.  
  343. //Logo behind copyright info needs separate fade routine
  344.  
  345. //function DoLogoFade() { //Fade logo characters
  346. //if(isMMInstalled==1) document.all.copyrightLogo.filters[0].Apply();
  347. //document.all.copyrightLogo.style.visibility="hidden";
  348. //if(isMMInstalled==1) document.all.copyrightLogo.filters[0].Play();
  349. //}
  350.  
  351. //When copyright link is clicked, show first paragraph of copyright info
  352.  
  353. function copyrightclick(){
  354. window.event.returnValue=0;
  355. if (noReEntry!=1) 
  356.     {
  357.     backButton.style.visibility="";    
  358.     nextButton.style.visibility="";    
  359.     backButton.disabled=0;
  360.     curDiv=1;
  361.     noReEntry=1;
  362.     DoFade(0);
  363. //    DoLogoFade();
  364.     }
  365. }
  366.  
  367. //Show logo underneath copyright link when hover over
  368. //function copyrightmouseover(){
  369. //copyrightLogo.style.visibility="visible";
  370. //}
  371.  
  372. //Hide logo again when mouse leaves copyright link
  373. //function copyrightmouseout(){
  374. //copyrightLogo.style.visibility="hidden";
  375. //}
  376.  
  377. //Go back one paragraph.  Check to see if at beginning
  378. function backButtononclick(){
  379. if (noReEntry==0) {
  380.     curDiv=curDiv-1;
  381.     if(curDiv<0) curDiv=0;
  382.     else {
  383.          noReEntry=1;
  384.          backwards=1;
  385.          //Fade old div out
  386.          DoFade(curDiv+1); 
  387.          }
  388.     }
  389. setButtonColor();
  390. }
  391.  
  392. //Go forward one paragraph
  393. function nextButtononclick(){
  394. if (noReEntry==0) {
  395.     curDiv=curDiv+1;
  396.     if(curDiv>beforeLinksDivCount+1) curDiv=beforeLinksDivCount+1;
  397.     else {
  398.          noReEntry=1;
  399.          //Fade old div out
  400.          DoFade(curDiv-1);
  401.          }
  402.     }
  403. setButtonColor();
  404. }
  405.  
  406. //Check to see if one of the buttons should be disabled
  407. //if at the beginning or end of the paragraphs
  408.  
  409. function setButtonColor() {
  410. if((curDiv==beforeLinksDivCount+1)&&(backwards==0)) {
  411.     nextButton.style.color="";
  412.     nextButton.disabled=1;
  413.     }
  414. else {
  415.       nextButton.disabled=0;
  416.       if(curDiv==0) {
  417.     backButton.style.color="";
  418.     backButton.disabled=1;
  419.     }
  420.       else backButton.disabled=0;
  421.      }
  422. }
  423.  
  424. //Respond to ESC key
  425.  
  426. function bodyOnKeyDown() {
  427. if (window.event.keyCode==27) window.close();
  428. }
  429.  
  430. //General function for turning the buttons text blue when mouseover
  431.  
  432. function buttonOnMouseOver(){
  433. var srcElement=window.event.srcElement;
  434. if (((srcElement.id!="backButton")|| (backButton.disabled==0))&&((srcElement.id!="nextButton")||(nextButton.disabled==0))) window.event.srcElement.style.color="blue";
  435. }
  436.  
  437. //General function for restoring the buttons text when mouse out
  438.  
  439. function buttonOnMouseOut(){
  440. var srcElement=window.event.srcElement;
  441. if (((srcElement.id!="backButton")|| (backButton.disabled==0))&&((srcElement.id!="nextButton")||(nextButton.disabled==0))) window.event.srcElement.style.color="";
  442. }
  443.  
  444. //launch IE tour in new window
  445.  
  446. function gettingStartedClick() {
  447. var foo="gettingstarted";
  448. window.open("res://ie4tour.dll/tour.htm#MinimalTour=1",foo,"");
  449. window.event.returnValue=false;
  450. return false;
  451. }
  452.  
  453. //Event is called when a transition is complete
  454. //Used to go from fade of one paragraph to show of the next
  455. //This event is called manually when MM is not enabled
  456.  
  457. function onfilterchangeHandler() {
  458. if(fade==1) window.setTimeout("DoShow()",100);
  459. else noReEntry=0;
  460. backwards=0;
  461. fade=0;
  462. }
  463.  
  464. //Separate event for the links, since they act differently
  465. //This is also called manually when MM is not enabled
  466.  
  467. function onfilterchangeHandlerLinks() {
  468. if(backwards!=1) { //going forwards
  469.     if(curDiv<totaldivCount) 
  470.         {
  471.         curDiv=curDiv+1;
  472.         window.setTimeout("DoShow()",100);
  473.         }
  474.     else     noReEntry=0;
  475.     }        
  476. else { //going backwards
  477.     if(curDiv>beforeLinksDivCount) { //still have links to fade
  478.         curDiv=curDiv-1;
  479.         window.setTimeout("DoFade(" +parseInt(curDiv+1) +")",100);
  480.         }
  481.     else {    //show div the comes before the links
  482.         curDiv=beforeLinksDivCount;
  483.         window.setTimeout("DoShow()",100);
  484.         }
  485.     }          
  486. fade=0;
  487. }
  488.  
  489.  
  490. // BUGBUG: This is a hack to work around MSHTML crashing on document.onselectstart events
  491. // being canceled (false being returned).
  492. var g_fWasMouseDown;
  493.  
  494. function MyOnMouseDown()
  495. {
  496.     g_fWasMouseDown = window.event.button;
  497. }
  498.  
  499. document.onmousedown = MyOnMouseDown;
  500.  
  501.  
  502. function CancelEvent()
  503. {
  504.     if (2 == g_fWasMouseDown)
  505.     {
  506.         return true;        // Trident crashes when Right-Click events are canceled.
  507.     }
  508.  
  509.     return false;   // Cancel event.
  510. }
  511.  
  512. // Disable text and object selecting.
  513. document.onselectstart = CancelEvent;
  514. document.ondragstart = CancelEvent;
  515.  
  516. function OpenEEGG()
  517. {
  518.     // Do the navigation
  519.     window.open("wcee.htm", "TheWCEE", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=414,height=352");
  520.     window.close();
  521.     return false;
  522. }
  523.  
  524.  
  525. function GetIndex(nStep, nDelta)
  526. {
  527.     nReturn = nStep + nDelta;
  528.  
  529.     if (nReturn < 0)
  530.         nReturn += g_nMaxStepHistory;
  531.  
  532.     if (g_nMaxStepHistory <= nReturn)
  533.         nReturn -= g_nMaxStepHistory;
  534.  
  535.     return nReturn;
  536. }
  537.  
  538. function StartFlinging()
  539. {
  540.     nStop = 1;
  541.  
  542.     for (j in FlingingItems)
  543.     {
  544.         obj = FlingingItems[j];
  545.  
  546.         if(obj.xDelta != 0) obj.style.pixelLeft += obj.xDelta;
  547.         if(obj.yDelta != 0) obj.style.pixelTop += obj.yDelta;
  548.  
  549.         if ((obj.style.pixelLeft > -1000) && (obj.style.pixelLeft < 2000) &&
  550.             (obj.style.pixelTop > -1000) && (obj.style.pixelTop < 2000))
  551.             nStop = 0;
  552.     }
  553.  
  554.     // Stop looping when object is fully off the screen.
  555.     if (0 == nStop)
  556.     {
  557.         window.setTimeout("StartFlinging()", 10);
  558.     }
  559. }
  560.  
  561. function TrackStep(x, y, e, bkey)
  562. {
  563.     CursorHistoryX[g_nStep] = x;
  564.     CursorHistoryY[g_nStep] = y;
  565.  
  566.     // Did we just bounce into a flingable object?
  567.     if ((e.SuperClass != g_szPrevElement) && (e.SuperClass == "Flingable"))
  568.     {
  569.         fValidFling = 1;
  570.         // Yes, so see if we can fling it.
  571.  
  572.         if (0 == e.reqDirX)
  573.         {
  574.             nIndex = 0;
  575.  
  576.             // It's necessary that all x movement remain within object width.
  577.             while ((nIndex < (g_nMaxStepHistory - 1)) && (1 == fValidFling))
  578.             {
  579.                 nPrevX = CursorHistoryX[GetIndex(g_nStep, -nIndex)];
  580.                 if ((nPrevX < e.style.pixelLeft) ||
  581.                     (nPrevX > e.style.pixelLeft + e.style.pixelWidth))
  582.                 {
  583.                     fValidFling = 0;
  584.                 }
  585.                 nIndex++;
  586.             }
  587.         }
  588.         else
  589.         {
  590.             nIndex = 0;
  591.  
  592.             // It's necessary that all x movement stay constantly left or right.
  593.             while ((nIndex < (g_nMaxStepHistory - 1)) && (1 == fValidFling))
  594.             {
  595.                 if (0 < e.reqDirX)
  596.                 {
  597.                     if (CursorHistoryX[GetIndex(g_nStep, -nIndex)] < CursorHistoryX[GetIndex(g_nStep, -nIndex - 1)])
  598.                     {
  599.                         fValidFling = 0;
  600.                     }
  601.                 }
  602.                 else
  603.                 {
  604.                     if (CursorHistoryX[GetIndex(g_nStep, -nIndex)] > CursorHistoryX[GetIndex(g_nStep, -nIndex - 1)])
  605.                     {
  606.                         fValidFling = 0;
  607.                     }
  608.                 }
  609.                 nIndex++;
  610.             }
  611.         }
  612.  
  613.         if (1 == fValidFling)
  614.         {
  615.             if (0 == e.reqDirY)
  616.             {
  617.                 nIndex = 0;
  618.  
  619.                 // It's necessary that all y movement remain within object height.
  620.                 while ((nIndex < (g_nMaxStepHistory - 1)) && (1 == fValidFling))
  621.                 {
  622.                     nPrevY = CursorHistoryY[GetIndex(g_nStep, -nIndex)];
  623.                     if ((nPrevY < e.style.pixelTop) ||
  624.                         (nPrevY > e.style.pixelTop + e.style.pixelHeight))
  625.                     {
  626.                         fValidFling = 0;
  627.                     }
  628.                     nIndex++;
  629.                 }
  630.             }
  631.             else
  632.             {
  633.                 nIndex = 0;
  634.  
  635.                 // It's necessary that all y movement stay constantly up or down.
  636.                 while ((nIndex < (g_nMaxStepHistory - 1)) && (1 == fValidFling))
  637.                 {
  638.                     if (0 < e.reqDirY)
  639.                     {
  640.                         if (CursorHistoryY[GetIndex(g_nStep, -nIndex)] < CursorHistoryY[GetIndex(g_nStep, -nIndex - 1)])
  641.                         {
  642.                             fValidFling = 0;
  643.                         }
  644.                     }
  645.                     else
  646.                     {
  647.                         if (CursorHistoryY[GetIndex(g_nStep, -nIndex)] > CursorHistoryY[GetIndex(g_nStep, -nIndex - 1)])
  648.                         {
  649.                             fValidFling = 0;
  650.                         }
  651.                     }
  652.                     nIndex++;
  653.                 }
  654.             }
  655.         }
  656.  
  657.         if ((1 == fValidFling) && bkey)
  658.         {
  659.             nXDelta = CursorHistoryX[g_nStep] - CursorHistoryX[GetIndex(g_nStep, -g_nMaxStepHistory + 1)];
  660.             nYDelta = CursorHistoryY[g_nStep] - CursorHistoryY[GetIndex(g_nStep, -g_nMaxStepHistory + 1)];
  661.  
  662.             if (0 != e.reqDirX)
  663.                 e.xDelta = Math.round(nXDelta / 2);
  664.             else
  665.                 e.xDelta = 0;
  666.  
  667.             if (0 != e.reqDirY)
  668.                 e.yDelta = Math.round(nYDelta / 2);
  669.             else
  670.                 e.yDelta = 0;
  671.  
  672.             FlingingItems[FlingingItems.length] = e;
  673.             g_cFlungObjects++;
  674.             g_nScore += (g_cFlungObjects * e.nScore);
  675.             StartFlinging();
  676.         }
  677.  
  678.     }
  679.  
  680.  
  681.     // Increment
  682.     g_szPrevElement = e.SuperClass;
  683.     g_nStep = GetIndex(g_nStep, 1);
  684. }
  685.  
  686. function StartWorldGrow()
  687. {
  688.     if (ID_World.style.pixelWidth > 800)
  689.     {
  690.         OpenEEGG();
  691.     }
  692.     else
  693.     {
  694.         ID_World.style.pixelWidth += 100;
  695.         ID_World.style.pixelHeight += 100;
  696.         ID_World.style.pixelLeft -= 30;
  697.         ID_World.style.pixelTop -= 30;
  698.         window.setTimeout("StartWorldGrow()", 10);
  699.     }
  700. }
  701.  
  702. function UpdateMouse(x, y, shift, button)
  703. {
  704.     var e;
  705.  
  706.     e = event.srcElement;
  707.  
  708.     if ((0 == g_fInDrag) && (e.className == "Movable"))
  709.     {
  710.         g_fInDrag = 1;
  711.         g_nDragOffsetX = event.x - document.all["ID_IE"].style.pixelLeft;
  712.         g_nDragOffsetY = event.y - document.all["ID_IE"].style.pixelTop;
  713.     }
  714.  
  715.  
  716.     if ((1 == event.button) && (1 == g_fInDrag) && (true == event.ctrlKey))
  717.     {
  718.         document.all["ID_IE"].style.pixelLeft = event.x - g_nDragOffsetX;
  719.         document.all["ID_IE"].style.pixelTop = event.y - g_nDragOffsetY;
  720.  
  721.         TrackStep(event.x, event.y, e, event.ctrlKey);
  722.     }
  723.     else
  724.     {
  725.         g_fInDrag = 0;
  726.  
  727.         // Check if IE Logo was dropped on the world.
  728.         if ((document.all["ID_IE"].style.pixelLeft > document.all["ID_World"].style.pixelLeft) &&
  729.             (document.all["ID_IE"].style.pixelLeft + document.all["ID_IE"].style.pixelWidth < document.all["ID_World"].style.pixelLeft + document.all["ID_World"].style.pixelWidth) &&
  730.             (document.all["ID_IE"].style.pixelTop > document.all["ID_World"].style.pixelTop) &&
  731.             (document.all["ID_IE"].style.pixelTop + document.all["ID_IE"].style.pixelHeight < document.all["ID_World"].style.pixelTop + document.all["ID_World"].style.pixelHeight) &&
  732.             g_nScore >= g_nScoreNeeded)
  733.         {
  734.             // Move the logo so we don't continue to navigate over and over again.
  735.             document.all["ID_IE"].style.pixelLeft = parseInt(document.all["ID_IE"].FinalX);
  736.             document.all["ID_IE"].style.pixelTop = parseInt(document.all["ID_IE"].FinalY);
  737.  
  738.             document.all["ID_IE"].style.visibility="hidden";
  739.  
  740.             // Make this cover everything else.
  741.             document.all["ID_World"].style.zIndex = "1000";
  742.             
  743.             g_nScore = 0;
  744.             StopWobble(ID_World);
  745.             window.setTimeout("StartWorldGrow()", 10);
  746.         }
  747.     }
  748.  
  749.     return 1;
  750. }
  751.  
  752. document.onmousemove = UpdateMouse;
  753.  
  754. function WobbleControl(obj)
  755. {
  756.     if (0 != obj.wobbleTimer)
  757.     {
  758.         obj.style.posLeft = parseInt(obj.nOrigLeft) + Math.round(Math.random() * 2 * g_nWobbleAmount) - g_nWobbleAmount;
  759.         obj.style.posTop = parseInt(obj.nOrigTop) + Math.round(Math.random() * 2 * g_nWobbleAmount) - g_nWobbleAmount;
  760.     }
  761. }
  762.  
  763. function StartWobble(obj)
  764. {
  765.     obj.wobbleTimer = setInterval("WobbleControl(ID_World)", 100);
  766. }
  767.  
  768. function StopWobble(obj)
  769. {
  770.     if (0 != obj.wobbleTimer)
  771.     {
  772.         clearInterval(obj.wobbleTimer);
  773.         obj.wobbleTimer = 0;
  774.         document.all["ID_World"].posLeft = parseInt(document.all["ID_World"].nOrigLeft);
  775.         document.all["ID_World"].posTop = parseInt(document.all["ID_World"].nOrigTop);
  776.     }
  777. }
  778.  
  779. function UnLock(obj)
  780. {
  781.     g_nScore += 1;
  782.     obj.disabled = true;
  783.     StartWobble(obj);
  784. }
  785. </SCRIPT>
  786. </body>
  787. </html>
  788.